home *** CD-ROM | disk | FTP | other *** search
/ PC World 2007 July & August / PCWorld_2007-07-08_cd.bin / komunikace / maxthon / mcombo.exe / Plugin / Del.icio.us Sidebar / scripts / pageScript.js < prev   
Text File  |  2006-09-02  |  7KB  |  321 lines

  1. /**************************
  2.     Del.icio.us Sidebar
  3.     By Neo101
  4.     Version 1.1.0
  5. **************************/
  6.  
  7. var openImageSrc = "images/folderOpen.gif"
  8. var closedImageSrc = "images/folderClosed.gif"
  9.  
  10. var openImg = new Image()
  11. openImg.src = openImageSrc
  12. var closedImg = new Image()
  13. closedImg.src = closedImageSrc
  14.  
  15. var currentlyOpenFolder = null
  16.  
  17.  
  18. function showBranch(branch, i){
  19.     var objBranch = document.getElementById(branch).style;
  20.     if(objBranch.display == "block"){
  21.         objBranch.display = "none";
  22.         currentlyOpenFolder = null
  23.     }
  24.     else {
  25.         objBranch.display = "block";
  26.         if(i != null){
  27.             currentlyOpenFolder = i
  28.         }
  29.     }
  30. }
  31.  
  32.  
  33. function swapFolder(img){
  34.     objImg = document.getElementById(img);
  35.     if(objImg.src.indexOf(closedImageSrc) != -1){
  36.         objImg.src = openImg.src;
  37.     }
  38.     else{
  39.         objImg.src = closedImg.src;
  40.     }
  41. }
  42.  
  43.  
  44.  
  45. function expandCollapse(i, element){
  46.     if(currentlyOpenFolder != null && currentlyOpenFolder != i){
  47.         var folder = currentlyOpenFolder
  48.         showBranch('branch' + folder)
  49.         swapFolder('folder' + folder)
  50.     }
  51.     showBranch('branch' + i, i)
  52.     swapFolder('folder' + i)
  53. }
  54.  
  55.  
  56. function showLink(link){
  57.     external.get_tab(SECURITY_ID, external.cur_sel).window.status = link
  58. }
  59.  
  60.  
  61. function hideLink(){
  62.     external.get_tab(SECURITY_ID, external.cur_sel).window.status = ''
  63. }
  64.  
  65.  
  66. function enterKeyPress() {
  67.     if (window.event.keyCode == 13){
  68.         save()
  69.     }
  70. }
  71.  
  72.  
  73. function showAddFavoriteDialog(type){
  74.     var CONFIG_WIDTH = '500'
  75.     var CONFIG_HEIGHT = '300'
  76.     var left = ( screen.width/2 ) - ( CONFIG_WIDTH / 2 )
  77.     var top =  ( screen.height/2 ) - ( CONFIG_HEIGHT / 2 )
  78.     var list = 'status:0;help:0;scroll:0;resizable:0;dialogHeight:'+CONFIG_HEIGHT+'px;dialogWidth:'+CONFIG_WIDTH+
  79.                     'px;center:0;dialogLeft:'+left+'px;dialogTop:'+top+'px'
  80.     if(type == 'add'){
  81.         isAddFavorite = true
  82.     } else {
  83.         isAddFavorite = false
  84.     }
  85.     var dialog = window.showModalDialog('addFavorite.html', window, list)
  86. }
  87.  
  88.  
  89. function addFavorite(form){
  90.     var url = form.url.value
  91.     var description = form.description.value
  92.     var extended = form.notes.value
  93.     var tags = form.tags.value
  94.     var shared = form.shared.checked
  95.     
  96.     if(url == '' || description == ''){
  97.         alert('Please fill in the URL and description')
  98.         return false
  99.     }
  100.     
  101.     var postURL = baseURL + 'posts/add?'
  102.     postURL += 'description=' + encodeURIComponent( description )
  103.     postURL += '&url=' + url
  104.     postURL += '&extended=' + encodeURIComponent( extended )
  105.     postURL += '&tags=' + encodeURIComponent( tags )
  106.     if(shared == false){
  107.         postURL += '&shared=no'
  108.     }
  109.  
  110.     loadXMLDoc(postURL, 'postFavorite', onResponsePostFavorite)
  111.     return true
  112. }
  113.  
  114.  
  115. function search(keyword){
  116.     if(currentlyOpenFolder != null){
  117.         var folder = currentlyOpenFolder
  118.         showBranch('branch' + folder)
  119.         swapFolder('folder' + folder)
  120.     }
  121.     if(keyword.length < 2){
  122.         //document.getElementById('favorites').innerHTML = favoritesHTML
  123.         
  124.         var nodes = document.getElementsByTagName('div')
  125.         for(var i=0; i<nodes.length; i++){
  126.             var node = nodes[i]
  127.             if( node.className == 'trigger' ) {
  128.                 node.style.display = ''
  129.             }
  130.             else if( node.className == 'branch' ){
  131.                 node.style.display = 'none'
  132.             }
  133.             else if( node.className == 'linkDiv' ){
  134.                 node.style.display = ''
  135.             }
  136.         }
  137.     }
  138.     if(keyword.length < 2){
  139.         return
  140.     }
  141.     
  142.     keyword = keyword.replace(/([\+\?\*\[\]\.\(\)])/g,'\\$1')
  143.     var re = new RegExp(keyword, 'i')
  144.     
  145.     var foundArray = new Array()
  146.     var nodes = document.getElementsByTagName('div')
  147.     for(var i=0; i<nodes.length; i++){
  148.         var node = nodes[i]
  149.         if( node.className == 'trigger' ) {
  150.             node.style.display = 'none'
  151.         }
  152.         else if( node.className == 'branch' ){
  153.             node.style.display = 'block'
  154.         }
  155.         if( node.className != 'linkDiv' ){
  156.             continue
  157.         }
  158.         else if( textInArray(node.innerHTML, foundArray) ){
  159.             node.style.display = 'none'
  160.             continue
  161.         }
  162.         
  163.         var match = re.exec(node.childNodes(0).href)
  164.         if(match == null){
  165.             match = re.exec(node.childNodes(0).title)
  166.         }
  167.         if(match == null){
  168.             match = re.exec(node.childNodes(0).innerText)
  169.         }
  170.         
  171.         if(match == null){
  172.             node.style.display = 'none'
  173.         } else {
  174.             foundArray.push(node.innerHTML)
  175.             node.style.display = ''
  176.         }
  177.     }
  178. }
  179.  
  180.  
  181. function textInArray(item, array){
  182.     for(var i=0; i<array.length; i++){
  183.         if( item == array[i] ){
  184.             return true
  185.         }
  186.     }
  187.     return false
  188. }
  189.  
  190.  
  191.  
  192. var contextMenuObj = new ContextMenu()
  193.  
  194. function ContextMenu(){
  195.     this.x = 0
  196.     this.y = 0
  197.     this.element = null
  198.     this.id = null
  199. }
  200.  
  201.  
  202.  
  203. function setMouseCoords() {
  204.     contextMenuObj.x = event.clientX;
  205.     contextMenuObj.y = event.clientY;
  206. }
  207.  
  208.  
  209. document.onmousemove = function(){
  210.     setMouseCoords()
  211. }
  212.  
  213.  
  214.  
  215. function showContextMenu(element) {
  216.     hideContextMenu()
  217.     contextMenuObj.element = element
  218.     if(element.className == 'trigger'){
  219.         contextMenuObj.id = 'contextMenuFolder'
  220.     }
  221.     else {
  222.         contextMenuObj.id = 'contextMenuFavorite'
  223.     }
  224.     doShowContextMenu(contextMenuObj.id)
  225. }
  226.  
  227.  
  228. function doShowContextMenu(elementId) {
  229.     var contextMenu = document.getElementById(elementId);
  230.     
  231.     setVisible(elementId)
  232.     
  233.     var clientWidth = ( document.documentElement.clientWidth == 0) ? document.body.clientWidth : document.documentElement.clientWidth
  234.     var clientHeight = ( document.documentElement.clientHeight == 0) ? document.body.clientHeight : document.documentElement.clientHeight
  235.     
  236.     if(contextMenuObj.x+contextMenu.offsetWidth + 10 > clientWidth){
  237.         contextMenu.style.left = (contextMenuObj.x-contextMenu.offsetWidth + document.documentElement.scrollLeft) + "px";
  238.     }
  239.     else{
  240.         contextMenu.style.left = contextMenuObj.x + 10 + "px";
  241.     }
  242.  
  243.     if(contextMenuObj.y+contextMenu.offsetHeight + 5 > clientHeight){
  244.         contextMenu.style.top = contextMenuObj.y - contextMenu.offsetHeight + document.documentElement.scrollTop - 10 + "px";
  245.     }
  246.     else{
  247.         contextMenu.style.top = contextMenuObj.y + document.documentElement.scrollTop + 10 + "px";
  248.     }
  249. }
  250.  
  251.  
  252. function hideContextMenu() {
  253.     setInvisible(contextMenuObj.id)
  254. }
  255.  
  256. function setInvisible( elementID ){
  257.     if(elementID == null){
  258.         return
  259.     }
  260.     document.getElementById( elementID ).style.display = 'none'
  261. }
  262.  
  263.  
  264. function setVisible( elementID ){
  265.     if(elementID == null){
  266.         return
  267.     }
  268.     document.getElementById( elementID ).style.display = 'block'
  269. }
  270.  
  271. document.onclick=function(){
  272.     hideContextMenu()
  273. }
  274.  
  275.  
  276. function openAll(){
  277.     var element = contextMenuObj.element
  278.     var nodes = element.nextSibling.getElementsByTagName('a')
  279.     for(var i=0; i<nodes.length; i++){
  280.         //external.m2_callerName(SECURITY_ID, PLUGIN_NAME)
  281.         window.open(nodes[i].href)
  282.     }
  283. }
  284.  
  285.  
  286. function editFavoriteClick(){
  287.     var element = contextMenuObj.element
  288.     var url = element.childNodes(0).href
  289.     
  290.     editElement = element.childNodes(0)
  291.     
  292.     if(editElement == null){
  293.         showError('Error 295: can\'t find URL')
  294.         return
  295.     }
  296.  
  297.     showAddFavoriteDialog('edit')
  298. }
  299.  
  300.  
  301. function deleteFavoriteClick(){
  302.     var element = contextMenuObj.element
  303.     
  304.     var url = element.childNodes(0).href
  305.     
  306.     var confirmation = confirm('Are you sure you would like to delete this favorite?\n' + url)
  307.     if(confirmation == false){
  308.         return
  309.     }
  310.     
  311.     deleteFavorite(url)
  312. }
  313.  
  314. function moreInfoFavoriteClick(){
  315.     var element = contextMenuObj.element
  316.     var url = 'http://del.icio.us/url/' + element.childNodes(0).hashCode
  317.     
  318.     //external.m2_callerName(SECURITY_ID, PLUGIN_NAME)
  319.     window.open(url)
  320.     
  321. }